<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
    // 1> 差分等差数列
    //      1, 2, 4, 7, 11, 16, ...
    // 2> 求 幂
    //      pow( a, b ): a 的 b 次方
    //      Math.pow( ... )
    // 3> 求阶乘
    //      5! => 5 * 4 * 3 * 2 * 1
    //      n! => n * ( n - 1 ) * ( n - 2 ) * ... * 1
    // 4> Fibonacci 数列
    //      1, 1, 2, 3, 5, 8, 13, ...
// 1
// function func( n ) {
//
//
//        if( n == 0 ) return 1;
//
//
//        return func( n-1 ) + n;
//
//    }

//2
    function pow( a, b ) {
        if ( b === 0 ) return 1;
        return pow( a, b-1 ) * a;
    }

    // 验证 2 的前 25 次方
    for( var i = 0; i < 26; i++ ) {
        console.log( 'Math.pow( 2, ' + i + ') = ' + Math.pow( 2, i ) +
                ', pow( 2, ' + i + ') = ' + pow( 2, i ) );
    }


//3
    function func( n ) {


            if( n == 0 ) return 1;


            return func( n-1 ) *(n+1);

        }

    for( var i = 0; i < 20; i++ ) {
        console.log( ' 递归计算: func( ' + i + ' ) = ' + func( i ) );
    }

//4
    function func( n ) {


        if( n == 0 ||n==1) return 1;


        return func( n-1 ) +func(n-2);

    }

</script>
</body>
</html>